<?php
include_once("PersonaAfectada.php");
include_once("CentroApoyo.php");


class Nodo {

    public $objeto;
    public $siguiente;

    function __construct($objeto) {

        $this->objeto = $objeto;
        $this->siguiente = NULL;
    }

    function darObjeto() {

        return $this->objeto;

    }
}

class Lista_PersonaAfectada {

    private $cabeza;
    private $cola;
    private $cantidad;

    function __construct() {

        $this->cabeza = NULL;
        $this->cola = NULL;
        $this->cantidad = 0;
    }

    public function estaVacio() {
        return ($this->cantidad == 0);
    }

    public function insertarCabeza($objeto) {
        $nodo = new Nodo($objeto);
        $nodo->siguiente = $this->cabeza;
        $this->cabeza = &$nodo;

        if($this->cola == NULL)
            $this->cola = &$nodo;

        $this->cantidad++;
    }

    public function insertarCola($objeto) {

        if($this->cabeza != NULL) {
            $nodo = new Nodo($objeto);
            $this->cola->siguiente = $nodo;
            $this->cola = &$nodo;
            $this->cantidad++;

        }else {

            $this->insertarCabeza($objeto);
        }
    }

    public function cantidad() {
        return $this->cantidad;
    }

    public function encontrar($posicion) {

        if($posicion < $this->cantidad) {

            $partida = $this->cabeza;
            for($i; $i < $posicion; $i++) {

                $partida = $partida->siguiente;
            }

            return $partida->objeto;
        }else {

            return NULL;
        }
    }

   /*Consulta las personas afectadas.*/
   function consultarPersonaAfectada(){

        $fbd = FachadaBD::getInstance();
        $result = $fbd->consultarPersonaAfectada();

        // Recorre el arreglo de tuplas.
        for ($i = 0; $i < count($result); $i++){

            $row = $result[$i];
            
            // Crea un objeto Persona Afectada.
            $persona = new PersonaAfectada($row['id'], $row['descripcion'],
                                           $row['nombre'],$row['ubicado'],
                                           $row['ci'],$row['contacto'], 
                                           $row['numero'],$row['dir_foto'],
                                           $row['fecha_desaparicion']
                                           );

            //Insertamos en el objeto lista el vehiculo
            $this->insertarCola($persona);
        }
    }

     /*Consulta las personas afectadas.*/
   function consultarPersonaAfectadaF($fecha){

        $fbd = FachadaBD::getInstance();
        $result = $fbd->consultarPersonaAfectadaF($fecha);

        // Recorre el arreglo de tuplas.
        for ($i = 0; $i < count($result); $i++){

            $row = $result[$i];

            // Crea un objeto Persona Afectada.
            $persona = new PersonaAfectada($row['id'], $row['descripcion'],
                                           $row['nombre'],$row['ubicado'],
                                           $row['ci'],$row['contacto'],
                                           $row['numero'],$row['dir_foto'],
                                           $row['fecha_desaparicion']
                                           );

            //Insertamos en el objeto lista el vehiculo
            $this->insertarCola($persona);
        }
    }

         /*Consulta las personas afectadas.*/
   function consultarPersonaAfectadaEx($id){

        $fbd = FachadaBD::getInstance();
        $result = $fbd->consultarPersonaAfectadaEx($id);

        // Recorre el arreglo de tuplas.
        for ($i = 0; $i < count($result); $i++){

            $row = $result[$i];

            // Crea un objeto Persona Afectada.
            $persona = new PersonaAfectada($row['id'], $row['descripcion'],
                                           $row['nombre'],$row['ubicado'],
                                           $row['ci'],$row['contacto'],
                                           $row['numero'],$row['dir_foto'],
                                           $row['fecha_desaparicion']
                                           );

            //Insertamos en el objeto lista el vehiculo
            $this->insertarCola($persona);
        }
    }
    function consultarCentrosApoyo(){

        $fbd = FachadaBD::getInstance();
        $result = $fbd->consultarCentrosApoyo();

        // Recorre el arreglo de tuplas.
        for ($i = 0; $i < count($result); $i++){

            $row = $result[$i];

            // Crea un objeto Persona Afectada.
            $centroApoyo = new CentroApoyo($row['nombre'], $row['tipo'],
                                           $row['desastre'],$row['capacidad'],
                                           $row['ubicacion'], $row['lat'],$row['lng'],
                                           $row['fecha']);

            //Insertamos en el objeto lista el vehiculo
            $this->insertarCola($centroApoyo);
        }
    }

    /*Consulta las Zonas en emergencia.*/
     function consultarZonaEmergencia($tipo,$fecha){

          $fbd = FachadaBD::getInstance();
           $result = $fbd->consultarZonaEmergencia($tipo,$fecha);

        // Recorre el arreglo de tuplas.
        for ($i = 0; $i < count($result); $i++){

            $row = $result[$i];
            $coord = $row['lat'].",".$row['lng'];

            // Crea un objeto Persona Afectada.
            $zona = new ZonaEmergencia($row['nombre'], $row['tipo'], $row['fecha'], $coord);
                    //$coordenadas);

            //Insertamos en el objeto lista el vehiculo
            $this->insertarCola($zona);
        }

    }


}
?>
